/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package InterfaceGUI;

import data.*;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Container.*;
import javax.swing.text.MaskFormatter;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.awt.event.ItemListener;
import java.util.Vector;

public class ZugriffsberechtigungAnlegen {

//Deklarierung der Variablen
JButton abbrechen;
JButton anlegen;
JFrame frame;
DefaultComboBoxModel comboBoxModel1;
JScrollPane scroller;
JLabel kalenderLabel;
JComboBox kalender;
JLabel berechtigungLabel;
JComboBox berechtigung;
JLabel personLabel;
JComboBox person;
JButton ok;
String Bezeichnung;
int ID;

public String Bezeichnung() {
        return Bezeichnung;
    }

public int ID() {
        return ID;
    }

public static void main(String[] args) {
        ZugriffsberechtigungAnlegen gui = new ZugriffsberechtigungAnlegen ();
        gui.zugriffsberechtigungAnlegen ();
        }

//Methode welche den Frame, mitsamt den Panels und Komponenten erstellt
public void zugriffsberechtigungAnlegen (){

//ein neuer Frame wird erstellt
frame = new JFrame ("Zugriffsberechtigung anlegen");

//ein neues Panel wird erstellt
JPanel zugriffsberechtigungAnlegenPanel = new JPanel();

//ein neues Gridbaglayout wird erstellt
GridBagLayout gbl = new GridBagLayout();

//dem buchungAnlegenPanel wird das neue Gridbaglayout zugewiesen
zugriffsberechtigungAnlegenPanel.setLayout(gbl);

//es werden neue GridBagConstraints erstellt
GridBagConstraints constraints = new GridBagConstraints();

personLabel = new JLabel("Person:");
constraints.insets = new Insets(9, 9, 9, 9);
constraints.anchor = GridBagConstraints.WEST;
constraints.weightx = 0;
zugriffsberechtigungAnlegenPanel.add(personLabel, constraints);


try {
    // Zunächst benötigen wir eine Verbindung mit der Verwaltung.
    Verwaltung verwaltung =
        (Verwaltung)Naming.lookup("rmi:/localhost:1099/DRM");


    Vector<Person> ergebnis1 = verwaltung.getAll_Person();
    Vector inhalte = new Vector();

//    Hier wird dem Vector 'inhalte' das Objekt Person mit den Elementen Vorname und Name
//    übergeben und der Combobox 'person' hinzugefügt
    for ( Person test : ergebnis1 ) {
        if (test != null ) {
//            Es wird überprüft ob die Person einen Titel besitzt. Trifft dies nicht zu wird dieser
//            in der Combobox weggelassen.
//            if (test.get_titel().equals("no title")) {
//                inhalte.add(test.get_vorname() + "  " + test.get_name());
//            }
//            else
                inhalte.add(test.get_vorname()+ " " + test.get_nachname());
        }
    }

    person = new JComboBox(inhalte);
    Dimension groessezugriffsberechtigungeintragtyp = new Dimension(310, 25);
    person.setPreferredSize(groessezugriffsberechtigungeintragtyp);
    //constraints.gridwidth = GridBagConstraints.REMAINDER;
    constraints.gridwidth = GridBagConstraints.REMAINDER;
    constraints.weightx = 1;
    constraints.fill = GridBagConstraints.NONE;
    //Combobox mit vordefinierten Daten f�llen
    zugriffsberechtigungAnlegenPanel.add(person, constraints);

    }
    catch (MalformedURLException murle) {
            System.out.println("MalformedURLException");
            System.out.println(murle);
    }
    catch (RemoteException re) {
            System.out.println("RemoteException");
            System.out.println(re);
    }
    catch (NotBoundException e) {
            System.out.println("NotBoundException");
            System.out.println(e);
    }
    catch (NullPointerException np) {
            System.out.println("NullPointerException");
            System.out.println(np);
    }


kalenderLabel= new JLabel("Kalender:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
zugriffsberechtigungAnlegenPanel.add(kalenderLabel, constraints);


try {
    // Zunächst benötigen wir eine Verbindung mit der Verwaltung.
    Verwaltung verwaltung =
        (Verwaltung)Naming.lookup("rmi:/localhost:1099/DRM");


    Vector<Kalender> ergebnis1 = verwaltung.getAll_Kalender();
    Vector inhalte = new Vector();

    //Hier wird dem Vector 'inhalte' das Objekt kalender mit dem Element Bezeichnung
    //übergeben und der Combobox 'kalender' hinzugefügt
    for ( Kalender test : ergebnis1 ) {
        if (test != null ) {
                inhalte.add(test.get_bezeichnung());
        }
    }

    kalender = new JComboBox(inhalte);
    //Dimension groesseerstelltVon = new Dimension(310, 25);
//    kalender.setPreferredSize(groessezugriffsberechtigungeintragtyp);
    constraints.gridwidth = GridBagConstraints.REMAINDER;
    constraints.weightx = 1;
    constraints.fill = GridBagConstraints.NONE;
    zugriffsberechtigungAnlegenPanel.add(kalender, constraints);

        }
    catch (MalformedURLException murle) {
            System.out.println("MalformedURLException");
            System.out.println(murle);
    }
    catch (RemoteException re) {
            System.out.println("RemoteException");
            System.out.println(re);
    }
    catch (NotBoundException e) {
            System.out.println("NotBoundException");
            System.out.println(e);
    }
    catch (NullPointerException np) {
            System.out.println("NullPointerException");
            System.out.println(np);
    }

berechtigungLabel= new JLabel("Berechtigungstyp:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
zugriffsberechtigungAnlegenPanel.add(berechtigungLabel, constraints);

berechtigung = new JComboBox();
//Dimension groesseerinnerung = new Dimension(3100, 25);
//berechtigung.setPreferredSize(groessezugriffsberechtigungeintragtyp);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
berechtigung.addItem("Lesen");
berechtigung.addItem("Lesen und Schreiben");
zugriffsberechtigungAnlegenPanel.add(berechtigung, constraints);


//Button Anlegen erstellen + ActionListener hinzufügen
anlegen = new JButton("anlegen");
constraints.insets = new Insets(56,9,0,0);
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
zugriffsberechtigungAnlegenPanel.add(anlegen, constraints);
anlegen.addActionListener(new AnlegenListener());

//Button abbrechen erstellen + ActionListener hinzufügen
abbrechen = new JButton("abbrechen");
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
zugriffsberechtigungAnlegenPanel.add(abbrechen, constraints);
abbrechen.addActionListener(new zugriffsberechtigungeintragabbrechenListener());

//Framegröße festlegen
frame.getContentPane().add(zugriffsberechtigungAnlegenPanel);
frame.setSize(500, 400);
frame.setResizable(false);
frame.setVisible(true);
}

//Button Events zuordnen (Anlegen)
class AnlegenListener implements ActionListener{


    public void actionPerformed(ActionEvent event){

    int antwort = JOptionPane.showConfirmDialog(frame, "Wollen Sie diese Zugriffsberechtigung anlegen?",
      "", JOptionPane.YES_NO_OPTION);
      if (antwort == JOptionPane.YES_OPTION){

//        //auslesen der einzelnen Strings der Felder. Diese werden dann in der Variable Ergebnisfelder zusammengefasst
         String ausgewaehltePerson = (String)person.getSelectedItem();
         String ausgewaehlterKalender = (String)kalender.getSelectedItem();
         String Zugriffsberechtigungstyp = (String)berechtigung.getSelectedItem();

//        //Hier muss noch eingebaut bwerden dass der Prozess nicht weiterläuft
//
//        }
//
        try {
                        // Zunächst benötigen wir eine Verbindung mit der Verwaltung.
                        Verwaltung verwaltung =
                                (Verwaltung)Naming.lookup("rmi:/localhost:1099/DRM");

                        /*
                         * Wenn wir hier ankommen, dann besteht eine Verbinung zum Server.
                         * Wäre die Verbindung nicht zustande gekommen, so wäre eine Exception
                         * ausgeworfen worden und das Programm wäre in den entsprechenden
                         * Catch-Block (s.u.) gesprungen.
                         */
                        System.out.println("Verbindung hergestellt...");
                        
                        Vector<Kalender> ergebnis1 = verwaltung.getAll_Kalender();
                        Vector<Person> ergebnis2 = verwaltung.getAll_Person();

                        //Hier wird Jedes Objekt des Vectors auf ggf. Titel, Name, Vorname überprüft und mit dem
                        //zuvor ausgelesenen String der Combobox verglichen. Wird die entsprechende kalender
                        //der Combobox gefunden wird von dieser die ID ausgelesen.
                        for ( Kalender test : ergebnis1 )  {
                            for ( Person test2 : ergebnis2 ) {
                            if (test != null ) {
                                if (test2 != null ) {
                                    String bezeichnungKalender  = test.get_bezeichnung();
                                    if (bezeichnungKalender.equals(ausgewaehlterKalender)) {
                                        int kalenderID = test.get_kalender_id();
                                    String Name  = test2.get_vorname() + " " + test2.get_nachname();
                                    if (Name.equals(ausgewaehltePerson)) {
                                        int personID = test2.get_person_id();

                                        // Hier wird entsprechend eine neue ZugriffsberechtigungAnlegen angelegt.
                                        Zugriffsberechtigung x = verwaltung.createZugriffsberechtigung(1, personID, kalenderID, Zugriffsberechtigungstyp);
                                }
                            }   
                        }

//                        Hier wird Jedes Objekt des Vectors auf Nachname, Vorname überprüft und mit dem
//                        zuvor ausgelesenen String der Combobox verglichen. Wird die entsprechende Person
//                        der ComboboPerson test2 : ergebnis2 x gefunden wird von dieser die ID ausgelesen.
                        
                            
                                                                                              
                                }
                            }
                        }
                        
 
                }
                catch (MalformedURLException murle) {
                        System.out.println("MalformedURLException");
                        System.out.println(murle);
                }
                catch (RemoteException re) {
                        System.out.println("RemoteException");
                        System.out.println(re);
                }
                catch (NotBoundException e) {
                        System.out.println("NotBoundException");
                        System.out.println(e);
                }
                catch (NullPointerException np) {
                        System.out.println("NullPointerException");
                        System.out.println(np);
                }

                JOptionPane.showMessageDialog(frame,"zugriffsberechtigung angelegt!");
                frame.setVisible(false);

            }
                else if (antwort == JOptionPane.NO_OPTION) {
                frame.setVisible(false);
                }
        }
    }

//Button Events zuordnen (abbrechen)
class zugriffsberechtigungeintragabbrechenListener implements ActionListener{

    public void actionPerformed(ActionEvent event){

      int antwort = JOptionPane.showConfirmDialog(frame, "Wollen Sie den Vorgang wirklich beenden?",
      "", JOptionPane.YES_NO_OPTION);
      if (antwort == JOptionPane.YES_OPTION)
      frame.setVisible(false);
    }
}
}